iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
DevOps

連DevSecOps都不知道怎麼發音怎麼開始學習?系列 第 2

Day.2 寫程式的SL大法-利用Git來進行時空跳躍(版本控制)

  • 分享至 

  • xImage
  •  

1. 前言:SL大法

簡單介紹 SL(Save & Load)的意思,就是存檔→讀檔→重來。

相信有在玩遊戲的各位對SL大法都不陌生,當要挑戰強大的BOSS前,或是要打開隨機掉裝的寶箱前,都會習慣性的存檔,避免讓自己從萌新到大佬的努力功虧一簣,小則心情鬱悶一陣子,大則角色直接廢掉

剛剛在寫這篇文章就是沒做好存檔,手賤按到ctrl+R,只好重新來過......

為了在寫程式的路上少走些彎路,寫程式的SL大法版本控制就是其中必用的工具,能讓你在新增、修改功能出現BUG又應付不了的時候,能即時回到先前存檔時還能動的狀態。而我們要使用的工具就是—Git

Git vs GitHub

很多人在使用Git的時候,甚至在這之前就知道GitHub這服務,或者說是網頁,會更貼近大家使用的方式

Git是工具,安裝在你電腦上
GitHub是服務,用瀏覽器就能用

簡單來說,Git就像是本地(在你電腦上儲存)的存檔器,使用Git把存檔放到GitHub,GitHub就是儲存存檔的雲端,讓別人也能下載、協作、甚至幫你打倒BOSS後再傳回來

接著該讓你瞧瞧Git的強大之處所在

2. Git:版本控制

只要有了Git,你不需要有一台會把香蕉變果凍的微波爐或IBM5100就能進行時空跳躍,還不只如此,還有許多好用的指令讓操作變得更方便

「這一切都是命運石之門的選擇」

  • Repository(倉庫):世界線資料庫
  • Commit(提交):存檔點
  • Branch(分支):不同世界線
  • Merge(合併):世界線融合
  • Revert / Reset(回退):回到存檔點
  • Conflict(衝突):世界線融合失敗,需要手動解決

這些名詞看過有印象就好,使用到再查詳細的用法即可

實際操作

先到git官方下載安裝(https://git-scm.com/downloads)
之後打開bash確認git安裝版本

git --version

確認成功安裝後就可以來創造存檔點了

建立倉庫(創建世界線資料庫)

git init

會在目前所在的資料夾建立新的Git倉庫,生成.git/ 的目錄
之後的每個存檔點都會記在這裡。

存檔(建立世界線節點)

git add .
git commit -m "初次存檔"

add .意思是把你的檔案變更加到暫存區,「.」代表加入目前資料夾下所有變更
commit -m "" 建立一個可回溯的存檔點。 -m ”你的文字”則是對這個存檔點的備註

若忘記add則世界線沒變化,也就無法下commit,也就是要
「更改檔案 -> git add -> git commit」

建新世界線

git branch beta

branch beta 建立一個叫beta的世界線(分支)
!注意!在這邊只是有一條世界線,但你還沒跳過去

git checkout beta

切換到beta世界線
切換世界線時Git會把工作目錄裡的檔案都換成該世界線最新存檔的版本

你在電腦上看到的檔案和內容,就叫工作目錄
此時存檔的紀錄會儲存在beta世界線上

建立個文字檔,讓beta跟main世界線有所差異

touch D-Mail.txt
git add .
git commit -m 'el psy kongroo'

世界線合併

git checkout main
git merge beta

回到main世界線並與beta世界線合併
此時能在工作目錄看見D-Mail文字檔

回到過去

git reset --hard <commit-id>

這邊可以先輸入git log看commit存檔紀錄取他的id
之後代入即可回到過去

!注意!使用--hard指令會使工作目錄和暫存直接覆蓋成目標commit狀態,等於未存檔的修改會直接消失,基本上就是世界線收束直接沒救

要回到未來可以輸入git reflog來查看commit id

3. 收尾

所以為什麼版本控制等於SL大法?

  • 不用怕改壞程式
  • 可以隨時回到「Bug 出現前」
  • 多人同時開發就像不同人探索不同世界線,最後再合併成果
  • 提高開發效率,降低「重寫」的風險

明天應該會建個庫做些東西放裡面吧,大概


上一篇
Day.1 首先認識DevSecOps是什麼?
下一篇
Day.3 世界線檢查機構啟動!用GitHub Actions守護未來(CI/CD)
系列文
連DevSecOps都不知道怎麼發音怎麼開始學習?22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言